import pygame
from pygame.sprite import Sprite, Group 
from src.enemies import Animal
from src.bullet import Bullet


def is_player_collide_enemy(player: Sprite, enemies: Group) -> bool:
    if enemy := pygame.sprite.spritecollide(player, enemies, False):
        return enemy
    return False

def get_bullet_collide_enemy(bullets: Group, enemies: Group) -> tuple[Bullet, Animal] | None:
    # 检测子弹是否击中敌人, 返回击中的敌人
    if result := pygame.sprite.groupcollide(bullets, enemies, False, False):
        # groupcollide() 方法返回一个字典, key是子弹, value是敌人
        # 获取字典所有的键, 可以用result.keys()
        # 获取字典所有的值, 可以用result.values()
        # 通过打印result.values()发现返回 dict_values([[<Snake Sprite(in 0 groups)>]])
        # 是一个dict_values的类，可以通过list()转换为列表
        # list下标从0开始
        # 通过连续2个下标最终获取到了Snake这个精灵的类
        return list(result.keys())[0], list(result.values())[0][0]
    return None
